package com.yidu.BusinessData.Api;

import com.yidu.BusinessData.entity.MarketData;
import com.yidu.BusinessData.service.MarketDataService;

import com.yidu.BusinessData.util.IdUtil;
import com.yidu.TAManagement.entity.Ta;
import com.yidu.TAManagement.service.TaService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 任俊杰
 * @version 1.0
 * @date 2023/2/9
 */
@RestController
@RequestMapping("api")
public class ApiController {

    //注入行情数据Market服务层
    @Resource
    MarketDataService marketDataService;

    @Resource
    TaService taService;

    /**
     * 导入行情数据 数据信息
     */
    @RequestMapping("uploadM")
    public Map<String,Object> uploadMarket(MultipartFile file) throws IOException {
        //创建一个新的Map用户存放回调信息
        Map<String, Object> map = new HashMap<>();
        System.out.println("文件对象"+file.getName());
        /*File file1=new File("d:/上交所2020-09-25行情信息.xlsx");*/
        //调用API解析工具类ApiReadOfExcelUtil.getList方法，获得对象数组集合
        List<MarketData> list = ApiReadOfExcelUtil.getList(MarketData.class, file.getInputStream(), 0);
        //循环遍历对象集合，set未获取到得值
        for (MarketData market : list) {
            System.out.println("market对象="+market);
            //从工具类获取当前交易数据表中可插入流水编号
            IdUtil idUtil=new IdUtil();
            //得到最大的id
            String maxFundId = marketDataService.selectMaxFundId();
            market.setMarketId(idUtil.createID(maxFundId));
            //调用MarketDataService服务新增交易数据信息
            marketDataService.addMarket(market);
        }
        //返回执行情况
        map.put("msg",list.size()+"条行情数据导入成功");
        if (list.size()==0){
            map.put("msg","文件中找不到行情数据信息");
        }
        return map;
    }




    /**
     * 导入TA交易数据信息
     * @param file 文件流
     * @return
     * @throws IOException
     */
    @RequestMapping("uploadTA")
    public Map<String,Object> uploadTransactionData(MultipartFile file) throws IOException{
        //创建一个新的Map用户存放回调信息
        Map<String, Object> map = new HashMap<>();
        //调用API解析工具类ApiReadOfExcelUtil.getList方法，获得对象数组集合
        List<Ta> list = ApiReadOfExcelUtil.getList(Ta.class, file.getInputStream(), 0);
        //循环遍历对象集合，set未获取到得值
        int i =0;
        for (Ta ta : list) {
           if (ta.getDealType ()==1) {
               taService.DeleteTaLmport (ta.getDealType (),ta.getDealTime (),ta.getMoney ());
               String substring = taService.SelectMaxtaId ().substring (2,11);
               //现金最大的id
               String id = "TA" + new com.yidu.InventoryManagement.Util.IdUtil ().createID (substring);
               //从工具类获取当前交易数据表中可插入流水编号
               ta.setTaId (id);
               //调用transactionDataService服务新增交易数据信息
               i =taService.InsertTa (ta);
           }
        }
        //返回执行情况
        map.put("msg",i+"条上交所交易数据导入成功");
        if (list.size()==0){
            map.put("msg","文件中找不到交易数据信息");
        }
        return map;
    }

    /**
     * 导入TA交易数据信息
     * @param file 文件流
     * @return
     * @throws IOException
     */
    @RequestMapping("uploadTAtwo")
    public Map<String,Object> uploadTransactionDataTow(MultipartFile file) throws IOException{
        //创建一个新的Map用户存放回调信息
        Map<String, Object> map = new HashMap<>();
        //调用API解析工具类ApiReadOfExcelUtil.getList方法，获得对象数组集合
        List<Ta> list = ApiReadOfExcelUtil.getList(Ta.class, file.getInputStream(), 0);
        //循环遍历对象集合，set未获取到得值
        int i =0;
        for (Ta ta : list) {
            if (ta.getDealType ()==2) {
                taService.DeleteTaLmport (ta.getDealType (),ta.getDealTime (),ta.getMoney ());
                String substring = taService.SelectMaxtaId ().substring (2,11);
                //现金最大的id
                String id = "TA" + new com.yidu.InventoryManagement.Util.IdUtil ().createID (substring);
                //从工具类获取当前交易数据表中可插入流水编号
                ta.setTaId (id);
                //调用transactionDataService服务新增交易数据信息
                i =taService.InsertTa (ta);
            }
        }
        //返回执行情况
        map.put("msg",i+"条上交所交易数据导入成功");
        if (list.size()==0){
            map.put("msg","文件中找不到交易数据信息");
        }
        return map;
    }

}
